// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLExprImpl;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.ast.SQLReplaceable;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.std::shared_ptr<std::list;
#pragma once
#include <list>
#include "../SQLExprImpl.h"
#include "../SQLReplaceable.h"
class SQLExpr;
class SQLObject;
class SQLArrayExpr :public SQLExprImpl ,virtual public SQLReplaceable {
  public:
    SQLExpr_ptr expr;
    SQLExpr_list_ptr  values ;

    SQLArrayExpr() ;
  SHAREDOBJECT(SQLArrayExpr);

    // SQLArrayExpr* clone() ;
    virtual SQLObject_ptr clone();
    SQLExpr_ptr getExpr() ;

    void setExpr(SQLExpr_ptr expr) ;

    SQLExpr_list_ptr  getValues() ;

    void setValues(SQLExpr_list_ptr  values) ;

    //@Override
    void accept0(SQLASTVisitor_ptr visitor) ;

    SQLObject_list_ptr  getChildren() ;

    //@Override
    int hashCode() ;

    //@Override
    bool equals(Object_ptr  obj) ;

    //@Override
    BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target) ;
};
typedef std::shared_ptr<SQLArrayExpr> SQLArrayExpr_ptr;
